﻿/**
 *	\file		lxpref_fac.hxx
 *	\date		(2014-12-07 23:52:50)/(2014-12-07 23:52:50)
 *-----------------------------------------------------------------------------
 *	\brief
 *	\version	1.0.0.1
 *	\author		Nick Shallery	(nicknide@gmail.com)
 *	\copyright	YOU HAVE ALL LEFT WITH THIS CODE WHILE YOU KEEP COMMENT IN EVERY COPY.
 *-----------------------------------------------------------------------------
**/

#if			!defined(LOLIX__PREF__PREF_FAC__HXX__NICK__K_IN_G__)
#define		LOLIX__PREF__PREF_FAC__HXX__NICK__K_IN_G__

#if			!defined(__LOLIX__PROFILE__LX_PREF__H__NICK__K_IN_G__)
	#include	"./lxpref.h"
#endif	//	!defined(__LOLIX__PROFILE__LX_PREF__H__NICK__K_IN_G__)

namespace lxnet{class net_factory;}
namespace lolix{namespace toy{class stdc_fun;class time_info;}}
namespace lolix{namespace loli{class critical_section_factory;class thread_factory;}}
namespace lxsamsara{class recurrence;}
namespace lxut{namespace ctrl{class ctrl_string_factory;}}

namespace lxpref{namespace _inst{
	class lxpref_fac_inst
		: public lolix::itf_Tbase<lxpref_fac_inst, lxpref_fac>
	{
		LOLIX_DEFINE_ITF(lxpref::_inst::lxpref_fac_inst, lxpref::lxpref_fac, (0x694f52a4, 0xf9894daf, 0x8caff3fa, 0xe9164d32));
		lolix::dynamic_allocator* _alc;
		lxio::file_async_pool_factory* _async_pool_fac;
		lolix::ref_factory* _ref_fac;
		lolix::toy::time_info* _tinf;
		lxnet::net_factory* _net_fac;
		lolix::toy::stdc_fun* _stdc;
		lolix::loli::signal::factory_type* _sig_fac;
		lolix::loli::critical_section_factory* _cs_fac;
		lxut::ctrl::ctrl_string_factory* _ctrl_str_fac;
		lolix::loli::thread_factory* _td_fac;
		lxsamsara::recurrence*		_recur;
		~lxpref_fac_inst(void);
	public:
		static LOLIX_RETNV create_inst(this_type** out_ptr, lolix::dynamic_allocator* alc
			, lxio::file_async_pool_factory* async_pool_fac
			, lolix::ref_factory* ref_fac
			, lxnet::net_factory* net_fac
			, lolix::toy::stdc_fun* stdc
			, lolix::loli::signal::factory_type* sig_fac
			, lolix::loli::critical_section_factory* cs_fac
			, lxut::ctrl::ctrl_string_factory* ctrl_str_fac
			, lolix::toy::time_info* tinf
			, lolix::loli::thread_factory* td_fac
			, lxsamsara::recurrence* recur
			);

		LOLIX_INTERFACE_DEF(create_inst, LOLIX_RETNV, (lxprofile** out_ptr));
		LOLIX_INTERFACE_DEF(create_inst, LOLIX_RETNV, (lxpref_route** out_ptr, lxprofile* prof));
		LOLIX_INTERFACE_DEF(create_inst, LOLIX_RETNV, (lxpref_route_end** out_ptr, lolix::lx_wchar const* path, lolix::size_type path_len, lxio::file_async_pool* async_pool));
	};
}}
#endif	//	!defined(LOLIX__PREF__PREF_FAC__HXX__NICK__K_IN_G__)
